3.3 Пишем на WML
WML во многом напоминает HTML, и изучить его не составляет
труда. Однако при использовании WML приходится придерживаться нескольких
неформальных рекомендаций.
По
WAP-протоколу данные в телефон поступают в виде колод (desks), размер одной
колоды невелик — порядка 1,5 Кб. Это сделано для повышения эффективности
трафика, и разработчику желательно предварительно компилировать WML-тексты для
подбора их оптимальных размеров. Колода состоит из карт (cards), каждая из
которых описывает один законченный модуль взаимодействия с пользователем
(интерактивный элемент экрана) и определяет способ навигации внутри колоды.
WML-тексты
чувствительны к регистру (как тексты на языке Си), и в этом состоит одна из
хоть и непринципиальных, но важных в практическом плане особенностей WML.
Последовательности символов переводов строки, табуляции, пробелов всегда
преобразуются в один пробел.
Все
WML-документы имеют расширение .wml и начинаются с трех стандартных строк:
<?xml
version=“1.0”?> (номер версии XML)
<!DOCTYPE
wml PUBLIC “-//WAPFORUM//DTD WML 1.1//EN” (идентификатор SGML-описания языка
WML)
<A HREF="http://www.wapforum.org/DTD/wml_1.1.xml">http://www.wapforum.org/DTD/wml_1.1.xml</A>”>
(Web-адрес DTD-определения WML-документа)
Колода
берется в теги
<wml>
...
</wml>
Внутри колоды
друг за другом следуют описания карт:
<card>
</card>
<card>
...
</card>
...
С помощью
специальных шаблонов можно определять дополнительные стандартные действия при
обращении к некоторым или ко всем картам колоды.
Каждая карта
должна иметь свой идентификатор и название:
<card id=“wap.pcweek.card1”
title=“pcweek.ru demonstraciya”>
Здесь надо отметить, что так
как далеко не все используемые в нашей стране WAP-телефоны русифицированы,
WAP-дизайнеру обязательно надо предлагать несколько видов представления своих
ресурсов — в частности, на транслите (латинскими буквами).
Большинство
тегов WML — парные, т. е. открывающие и закрывающие, как того требует стандарт
XML, за небольшими исключениями, например, кроме тега новой строки
Простейший
тег <p> описывает один параграф текста:
<p>
>Dobro pozhalovat’ na wap-server
pcweek.ru!
</p>
Законченная
страничка (она может быть, например, сохранена на сайте wap.pcweek.ru как
заглавная — index.wml) полностью запишется так:
<?xml version=“1.0”?>
<!DOCTYPE wml PUBLIC
“-//WAPFORUM//DTD WML 1.1//EN”
“<A HREF="http://www.wapforum.org/DTD/wml_1.1.xml">www.wapforum.org/DTD/wml_1.1.xml</A>”>
<wml>
<card id=“wap.pcweek.card1”
title=“pcweek.ru demonstraciya”>
<p>
Dobro pozhalovat’ na wap-server
pcweek.ru!
</p>
</card>
</wml>
Если
выводимый текст не умещается на мониторе трубки, то пользователю придется его
скроллировать, поэтому лучше не создавать больших карт и колод, а разбивать их
на маленькие составляющие, снабжая продуманными средствами навигации.
Для привязки
различных функций к средствам управления телефона служит тег . Его важнейшие
атрибуты — type (тип действия; значение accept задает переход к следующей
карте, значение prev — к предыдущей), name (идентификатор для связи с данной
реализацией тега) и label (название действия, выводимое на экран в область
навигации).
Конкретный
адрес перехода задается непарным тегом .
Среди других
WML-тегов можно отметить средства захвата пользовательского ввода, создания
всевозможных списков, расширенной навигации, форматирования текста. Кроме того,
имеются переменные, начинающиеся с символа $ и позволяющие передавать данные
между картами.
Следующий
пример описывает колоду из двух карт. Первая, с заголовком экрана “Карта 1”,
выводит подсказку “Vvedite imya:”, а после ввода и выбора действия
“Sled” активизирует вторую карту, которая показывает на экране телефона
приветствие с ранее введенным именем и позволяет выполнить переход на сайт
wap.zdnet.ru:
<?xml version=“1.0”?>
<!DOCTYPE wml PUBLIC
“-//WAPFORUM//DTD WML 1.1//EN”
“<A
HREF="http://www.wapforum.org/DTD/wml_1.1.xml">www.wapforum.org/DTD/wml_1.1.xml</A>”>
<wml>
<card id=“Card1” title=“Karta
1”>
<do type=“accept” label=“Sled”>
<go href=“#Card2”/>
</do>
<p>
Vvedite imya: <input
name=“username”/>
</p>
</card>
<card id=“Card2” title=“Karta
2”>
<do type=“accept”
label=“ZdNet.Ru”>
<go
href=“http://wap.zdnet.ru”/>
</do>
<p>
Privet, $(username)!
</p>
</card>
</wml>
На
WML-страничке можно также размещать небольшие сценарии на языке WMLScript,
представляющем собой подмножество JavaScript и оптимизированном для выполнения
на мобильных устройствах с малыми вычислительными ресурсами.
Сформированную таким образом WML-страничку можно положить, например, по
обычному FTP-протоколу на поддомен wap.pcweek.ru (это стандартная практика —
организовывать для WAP-доступа сайты, начинающиеся не с www, а с wap), после
чего этот поддомен станет новым российским WAP-ресурсом.
<<<-НАЗАД-<<< ::: <<<-ГЛАВНАЯ->>> ::: >>>-ВПЕРЁД->>>